using System;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Ordens.Model.Enum;
namespace  Sinacor.UI.Bovespa.Ordens.Model
{
    public class ConsultaOrdensNegocios : BaseModel
    {
        private string _apelidoCliente;
        private string _bolsa;
        private DateTime? _dataPregao;
        private int _numeroOrdem;
        private int _numeroOrdemSubSequencia;
        private TipoSituacaoOrdem _tipoSituacao;

        //20080416 16:24 - Renomeado e alterado para ser anulavel - DMilanez.7Comm
        private TipoNaturezaOperacao? _tipoNaturezaOperacao;

        private string _titulo;

        //20080420 15:47 - Alterado - DMilanez.7Comm
        private Negocio _negocioSelecionado;

        private object _ordemSelecionada;
        private decimal? _cambio;
        private int? _codigoBroker;
        private int? _codigoCarteira;
        private string _codigoCasamento;
        private int? _codigoCliente;
        private string _codigoISIN;
        private string _codigoNegocio;
        private int? _codigoUsuario;
        private int? _codigoUsuarioOrdem;
        private string _complementoNomeCliente;
        private DateTime? _dataOrdem;
        private DateTime? _dataValidade;
        private int? _digitoCliente;
        private DateTime? _horaOrdem;
        private bool? _indicadorChamadaLog;
        private bool? _indicadorDesprezaSaldo;
        private string _indicadorDistribuicao;
        private string _indicadorLiquidacao;
        private bool? _indicadorOrdemAbertaAdminCon;
        private bool? _indicadorOrdemFilaCasamento;
        private bool? _indicadorPessoaVinculada;
        private string _indicadorTipoDistribuicao;
        private string _nomeCliente;
        private string _nomeEmissorOrdem;
        //20080411 15:26 - Renomeado de _nomeOperador para _loginOperador - DMilanez.7Comm
        private string _loginOperador;
        private int _numero;
        private int? _numeroOrdemOriginal;
        private int _numeroOrdemSequencia;
        private string _observacaoOrdem;
        private int? _operador;
        private decimal? _percentualReducaoAcrescimo;
        private decimal? _preco;
        private decimal? _quantidade;
        private decimal? _quantidadeAnexo4;
        private decimal? _quantidadeAnexo5;
        private decimal? _quantidadeCanceladaOferta;
        private decimal? _quantidadeCasada;
        private string _situacao;
        private decimal? _taxaFinanciamento;
        private int? _tipoFax;
        private EnumWrapper<TipoMercado> _tipoMercado; //alterado para aceitar nulo - esertorio - 200805091556 - ref issue ID0004646
        private TipoOrdem? _tipoOrdem; //alterado para aceitar nulo - esertorio - 200805091556 - ref issue ID_ABERTO_NO_MANTIS
        private decimal? _valorFinanciado;
        private decimal? _valorOrdem;
        private int? _vencimentoTermo;

        #region Propriedade
        public int NumeroOrdemSubSequencia
        {
            get { return _numeroOrdemSubSequencia; }
            set { _numeroOrdemSubSequencia = value; this.OnPropertyChanged("NumeroOrdemSubSequencia"); }
        }

        //20080416 16:23 - Renomeado e alterado para ser anulavel - DMilanez.7Comm
        public TipoNaturezaOperacao? TipoNaturezaOperacao
        {
            get { return _tipoNaturezaOperacao; }
            set { _tipoNaturezaOperacao = value; this.OnPropertyChanged("TipoNaturezaOperacao"); }
        }

        //20080420 15:46 - Alterado - DMilanez.7Comm
        public Negocio NegocioSelecionado
        {
            get { return _negocioSelecionado; }
            set { _negocioSelecionado = value; this.OnPropertyChanged("NegocioSelecionado"); }
        }

        public object OrdemSelecionada
        {
            get { return _ordemSelecionada; }
            set { _ordemSelecionada = value; this.OnPropertyChanged("OrdemSelecionada"); }
        }

        public string Bolsa
        {
            get { return _bolsa; }
            set { _bolsa = value; this.OnPropertyChanged("Bolsa"); }
        }

        public string ApelidoCliente
        {
            get { return _apelidoCliente; }
            set { _apelidoCliente = value; this.OnPropertyChanged("ApelidoCliente"); }
        }

        public DateTime? DataPregao
        {
            get { return _dataPregao; }
            set { _dataPregao = value; this.OnPropertyChanged("DataPregao"); }
        }

        public string Titulo
        {
            get { return _titulo; }
            set { _titulo = value; this.OnPropertyChanged("Titulo"); }
        }

        public TipoSituacaoOrdem TipoSituacao
        {
            get { return _tipoSituacao; }
            set { _tipoSituacao = value; this.OnPropertyChanged("TipoSituacao"); }
        }

        public int NumeroOrdem
        {
            get { return _numeroOrdem; }
            set { _numeroOrdem = value; this.OnPropertyChanged("NumeroOrdem"); }
        }

        public decimal? Cambio
        {
            get { return _cambio; }
            set { _cambio = value; this.OnPropertyChanged("Cambio"); }
        }

        public int? CodigoBroker
        {
            get { return _codigoBroker; }
            set { _codigoBroker = value; this.OnPropertyChanged("CodigoBroker"); }
        }

        public int? CodigoCarteira
        {
            get { return _codigoCarteira; }
            set { _codigoCarteira = value; this.OnPropertyChanged("CodigoCarteira"); }
        }

        public string CodigoCasamento
        {
            get { return _codigoCasamento; }
            set { _codigoCasamento = value; this.OnPropertyChanged("CodigoCasamento"); }
        }

        public int? CodigoCliente
        {
            get { return _codigoCliente; }
            set { _codigoCliente = value; this.OnPropertyChanged("CodigoCliente"); }
        }

        public string CodigoISIN
        {
            get { return _codigoISIN; }
            set { _codigoISIN = value; this.OnPropertyChanged("CodigoISIN"); }
        }

        public string CodigoNegocio
        {
            get { return _codigoNegocio; }
            set { _codigoNegocio = value; this.OnPropertyChanged("CodigoNegocio"); }
        }

        public int? CodigoUsuario
        {
            get { return _codigoUsuario; }
            set { _codigoUsuario = value; this.OnPropertyChanged("CodigoUsuario"); }
        }

        public int? CodigoUsuarioOrdem
        {
            get { return _codigoUsuarioOrdem; }
            set { _codigoUsuarioOrdem = value; this.OnPropertyChanged("CodigoUsuarioOrdem"); }
        }

        public string ComplementoNomeCliente
        {
            get { return _complementoNomeCliente; }
            set { _complementoNomeCliente = value; this.OnPropertyChanged("ComplementoNomeCliente"); }
        }

        public DateTime? DataOrdem
        {
            get { return _dataOrdem; }
            set { _dataOrdem = value; this.OnPropertyChanged("DataOrdem"); }
        }

        public DateTime? DataValidade
        {
            get { return _dataValidade; }
            set { _dataValidade = value; this.OnPropertyChanged("DataValidade"); }
        }

        public int? DigitoCliente
        {
            get { return _digitoCliente; }
            set { _digitoCliente = value; this.OnPropertyChanged("DigitoCliente"); }
        }

        public DateTime? HoraOrdem
        {
            get { return _horaOrdem; }
            set { _horaOrdem= value; this.OnPropertyChanged("HoraOrdem");
            _horaOrdemFormatada = ((DateTime)_horaOrdem).ToString("HH:mm");

            }
        }
        private string _horaOrdemFormatada; 
        public System.String HoraOrdemFormatada
        {
            get { return _horaOrdemFormatada; }
            set { _horaOrdemFormatada = value; this.OnPropertyChanged("HoraOrdemFormatada"); }  
        }
        public bool? IndicadorChamadaLog
        {
            get { return _indicadorChamadaLog; }
            set { _indicadorChamadaLog = value; this.OnPropertyChanged("IndicadorChamadaLog"); }
        }

        public bool? IndicadorDesprezaSaldo
        {
            get { return _indicadorDesprezaSaldo; }
            set { _indicadorDesprezaSaldo = value; this.OnPropertyChanged("IndicadorDesprezaSaldo"); }
        }

        public string IndicadorDistribuicao
        {
            get { return _indicadorDistribuicao; }
            set { _indicadorDistribuicao = value; this.OnPropertyChanged("IndicadorDistribuicao"); }
        }

        public string IndicadorLiquidacao
        {
            get { return _indicadorLiquidacao; }
            set { _indicadorLiquidacao = value; this.OnPropertyChanged("IndicadorLiquidacao"); }
        }

        public bool? IndicadorOrdemAbertaAdminCon
        {
            get { return _indicadorOrdemAbertaAdminCon; }
            set { _indicadorOrdemAbertaAdminCon = value; this.OnPropertyChanged("IndicadorOrdemAbertaAdminCon"); }
        }

        public bool? IndicadorOrdemFilaCasamento
        {
            get { return _indicadorOrdemFilaCasamento; }
            set { _indicadorOrdemFilaCasamento = value; this.OnPropertyChanged("IndicadorOrdemFilaCasamento"); }
        }

        public bool? IndicadorPessoaVinculada
        {
            get { return _indicadorPessoaVinculada; }
            set { _indicadorPessoaVinculada = value; this.OnPropertyChanged("IndicadorPessoaVinculada"); }
        }

        public string IndicadorTipoDistribuicao
        {
            get { return _indicadorTipoDistribuicao; }
            set { _indicadorTipoDistribuicao = value; this.OnPropertyChanged("IndicadorTipoDistribuicao"); }
        }

        public string NomeCliente
        {
            get { return _nomeCliente; }
            set { _nomeCliente = value; this.OnPropertyChanged("NomeCliente"); }
        }

        public string NomeEmissorOrdem
        {
            get { return _nomeEmissorOrdem; }
            set { _nomeEmissorOrdem = value; this.OnPropertyChanged("NomeEmissorOrdem"); }
        }

        //20080411 15:26 - Renomeado de NomeOperador Para LoginOperador - DMilanez.7Comm
        public string LoginOperador
        {
            get { return _loginOperador; }
            set { _loginOperador = value; this.OnPropertyChanged("LoginOperador"); }
        }

        public int Numero
        {
            get { return _numero; }
            set { _numero = value; this.OnPropertyChanged("Numero"); }
        }

        public int? NumeroOrdemOriginal
        {
            get { return _numeroOrdemOriginal; }
            set { _numeroOrdemOriginal = value; this.OnPropertyChanged("NumeroOrdemOriginal"); }
        }

        public int NumeroOrdemSequencia
        {
            get { return _numeroOrdemSequencia; }
            set { _numeroOrdemSequencia = value; this.OnPropertyChanged("NumeroOrdemSequencia"); }
        }

        public string ObservacaoOrdem
        {
            get { return _observacaoOrdem; }
            set { _observacaoOrdem = value; this.OnPropertyChanged("ObservacaoOrdem"); }
        }

        public int? Operador
        {
            get { return _operador; }
            set { _operador = value; this.OnPropertyChanged("Operador"); }
        }

        public decimal? PercentualReducaoAcrescimo
        {
            get { return _percentualReducaoAcrescimo; }
            set { _percentualReducaoAcrescimo = value; this.OnPropertyChanged("PercentualReducaoAcrescimo"); }
        }

        public decimal? Preco
        {
            get { return _preco; }
            set { _preco = value; this.OnPropertyChanged("Preco"); }
        }

        public decimal? Quantidade
        {
            get { return _quantidade; }
            set { _quantidade = value; this.OnPropertyChanged("Quantidade"); }
        }

        public decimal? QuantidadeAnexo4
        {
            get { return _quantidadeAnexo4; }
            set { _quantidadeAnexo4 = value; this.OnPropertyChanged("QuantidadeAnexo4"); }
        }

        public decimal? QuantidadeAnexo5
        {
            get { return _quantidadeAnexo5; }
            set { _quantidadeAnexo5 = value; this.OnPropertyChanged("QuantidadeAnexo5"); }
        }

        public decimal? QuantidadeCanceladaOferta
        {
            get { return _quantidadeCanceladaOferta; }
            set { _quantidadeCanceladaOferta = value; this.OnPropertyChanged("QuantidadeCanceladaOferta"); }
        }

        public decimal? QuantidadeCasada
        {
            get { return _quantidadeCasada; }
            set { _quantidadeCasada = value; this.OnPropertyChanged("QuantidadeCasada"); }
        }

        public string Situacao
        {
            get { return _situacao; }
            set { _situacao = value; this.OnPropertyChanged("Situacao"); }
        }

        public decimal? TaxaFinanciamento
        {
            get { return _taxaFinanciamento; }
            set { _taxaFinanciamento = value; this.OnPropertyChanged("TaxaFinanciamento"); }
        }

        public int? TipoFax
        {
            get { return _tipoFax; }
            set { _tipoFax = value; this.OnPropertyChanged("TipoFax"); }
        }

        public EnumWrapper<TipoMercado> TipoMercado //alterado para aceitar nulo - esertorio - 200805091556 - ref issue ID0004646
        {
            get { return _tipoMercado; }
            set { _tipoMercado = value; this.OnPropertyChanged("TipoMercado"); }
        }

        //TODO:EDU - ID_ABERTO_NO_MANTIS
        public TipoOrdem? TipoOrdem //alterado para aceitar nulo - esertorio - 200805091556 - ref issue ID_ABERTO_NO_MANTIS
        {
            get { return _tipoOrdem; }
            set { _tipoOrdem = value; this.OnPropertyChanged("TipoOrdem"); }
        }

        public decimal? ValorFinanciado
        {
            get { return _valorFinanciado; }
            set { _valorFinanciado = value; this.OnPropertyChanged("ValorFinanciado"); }
        }

        public decimal? ValorOrdem
        {
            get { return _valorOrdem; }
            set { _valorOrdem = value; this.OnPropertyChanged("ValorOrdem"); }
        }

        public int? VencimentoTermo
        {
            get { return _vencimentoTermo; }
            set { _vencimentoTermo = value; this.OnPropertyChanged("VencimentoTermo"); }
        }

        #endregion

        /// Data:16/04/2008 15:00
        /// Autor:DMilanez.7Comm
        /// Obs: Adicionado para receber o saldo da ordem
        private System.Decimal? _saldo;
        public System.Decimal? Saldo
        {
            get { return _saldo; }
            set { _saldo = value; this.OnPropertyChanged("Saldo"); }
        }
    }
}